package com.bage.finance.biz.service;

import com.bage.finance.biz.dto.form.*;
import com.bage.finance.biz.dto.vo.GetRoleDetailVo;
import com.bage.finance.biz.dto.vo.ListRoleVo;
import com.bage.finance.biz.dto.vo.MenuDataItemVo;
import com.bage.mybatis.help.PageInfo;

import java.util.List;

public interface SysRoleService {
    /**
     * 保存角色路由
     * @param form
     * @return
     */
    Boolean create(CreateSysRoleForm form);

    /**
     * 查看角色列表
     * @param form
     * @return
     */
    PageInfo<ListRoleVo> list(ListRoleForm form);

    /**
     * 获取角色明细
     * @param id
     * @return
     */
    GetRoleDetailVo getById(Integer id);

    /**
     * 修改角色
     * @param form
     * @return
     */
    Boolean update(UpdateRoleForm form);

    /**
     * 是否禁用角色
     * @param form
     * @return
     */
    Boolean updateDisable(UpdateRoleDisableForm form);

    /**
     * 删除角色
     * @param id
     * @return
     */
    Boolean del(Integer id);

    /**
     * 角色绑定菜单列表
     * @param form
     * @return
     */
    Boolean roleBindMenu(RoleBindMenuForm form);

    /**
     * 查询当前登录用户角色绑定的菜单列表
     * @return
     */
    List<MenuDataItemVo> listRoleBindMenu();

    /**
     * 将所有角色绑定的菜单设置到缓存中(通过定时任务触发)
     */
    void setSysRoleMenuCache();

    /**
     * 角色绑定资源列表
     * @param form
     * @return
     */
    Boolean roleBindResource(RoleBindResourceForm form);

    /**
     * 将所有角色绑定的资源设置到缓存中(通过定时任务触发)
     */
    void setSysRoleResourceCache();
}
